package com.yaolong.api.modules.gen.controller;//package com.yaolong.api.modules.gen.controller;
//
//import com.baomidou.mybatisplus.annotation.FieldFill;
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.core.mapper.BaseMapper;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.IDatabaseQuery;
//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
//import com.baomidou.mybatisplus.generator.config.IDbQuery;
//import com.baomidou.mybatisplus.generator.config.InjectionConfig;
//import com.baomidou.mybatisplus.generator.config.OutputFile;
//import com.baomidou.mybatisplus.generator.config.PackageConfig;
//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
//import com.baomidou.mybatisplus.generator.config.TemplateConfig;
//import com.baomidou.mybatisplus.generator.config.TemplateType;
//import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
//import com.baomidou.mybatisplus.generator.config.po.TableInfo;
//import com.baomidou.mybatisplus.generator.config.querys.DB2Query;
//import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
//import com.baomidou.mybatisplus.generator.config.querys.OracleQuery;
//import com.baomidou.mybatisplus.generator.config.querys.PostgreSqlQuery;
//import com.baomidou.mybatisplus.generator.config.querys.SqlServerQuery;
//import com.baomidou.mybatisplus.generator.config.rules.DateType;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
//import com.baomidou.mybatisplus.generator.fill.Column;
//import com.baomidou.mybatisplus.generator.fill.Property;
//import io.agilefast.common.api.R2;
//import io.agilefast.common.api.Result;
//
//import io.agilefast.common.exception.RRException;
//import com.yaolong.commons.base2.BaseController;
//import com.yaolong.commons.base2.BaseEntity;
//import com.yaolong.commons.base2.BaseServiceImpl;
//import com.yaolong.commons.base2.IBaseService;
//import com.yaolong.api.modules.gen.config.CustomConfigs;
//import com.yaolong.api.modules.gen.config.CustomControllerStrategyConfig;
//import com.yaolong.api.modules.gen.config.CustomFileConfig;
//import com.yaolong.api.modules.gen.config.CustomGlobalConfig;
//import com.yaolong.api.modules.gen.config.CustomOutputTemplateResultConfig;
//import com.yaolong.api.modules.gen.config.CustomTemplateConfig;
//import com.yaolong.api.modules.gen.constants.GenConstants;
//import com.yaolong.api.modules.gen.vo.GenBaseConfigEntity;
//import com.yaolong.api.modules.gen.vo.GenDataSourceConfigEntity;
//import com.yaolong.api.modules.gen.vo.GenTableConfigEntity;
//import com.yaolong.api.modules.gen.genengines.CustomAbstractTemplateEngine;
//import com.yaolong.api.modules.gen.genengines.CustomBeetlTemplateEngine;
//import com.yaolong.api.modules.gen.genengines.CustomFreemarkerTemplateEngine;
//import com.yaolong.api.modules.gen.genengines.CustomVelocityTemplateEngine;
//import com.yaolong.api.modules.gen.model.dto.TemplateDetailDto;
//import com.yaolong.api.modules.gen.service.ITemplateFileService;
//import com.yaolong.api.modules.gen.utils.MapperUtils;
//import com.yaolong.api.modules.gen.vo.CodeGenConfigVo;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import org.jetbrains.annotations.NotNull;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.util.ObjectUtils;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @author yaolong
// * @version V1.0.0
// * @program EasyCode
// * @description
// * @create 2022-12-28 14:42
// **/
//@RestController
//@RequestMapping("/api/gen")
//@Api(tags = "代码生成")
//public class Gen2Controller {
//
//    @Value("${spring.datasource.url}")
//    private String url;
//    @Value("${spring.datasource.username}")
//    private String username;
//    @Value("${spring.datasource.password}")
//    private String password;
//
//    private final static String dir = "agilefast-platform/agilefast-gen-api/src/main";
//    private final static String moduleName = "gen";
//
//    @Autowired
//    ITemplateFileService templateFileService;
//
//
//    @PostMapping("/generate")
//    @ApiOperation(value = "根据表代码生成代码",notes = "根据表代码生成代码")
//    public Result<CustomOutputTemplateResultConfig> gen(@RequestBody CodeGenConfigVo genConfig) {
//
//
//
//        //注入模板结果配置-当代码生成完成后该结果配置中会被设置文件生成的结果
//        CustomOutputTemplateResultConfig customOutputTemplateResultConfig = new CustomOutputTemplateResultConfig();
//
//        GenBaseConfigEntity genBaseConfigEntity = genConfig.getGenBaseConfigEntity();
//        GenDataSourceConfigEntity genDataSourceEntity = genConfig.getGenDataSourceEntity();
//        List<GenTableConfigEntity> genTableConfigs = genConfig.getGenTableConfigs();
//
//
//
//        //数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(genDataSourceEntity.getDbUrl(),genDataSourceEntity.getDbName(),genDataSourceEntity.getDbPassword())
//                .dbQuery(getDbQuery(genDataSourceEntity.getDbType()))
//                .build();
//        AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
//
//        //初始化全局配置
//        initGlobalConfig(genBaseConfigEntity, autoGenerator);
//
//
//
//        //当前模板组中的模板
//        Long templateGroupId = genBaseConfigEntity.getTemplateGroupId();
//        List<TemplateDetailDto> templateDetailsList = templateFileService.getTemplateDetailsList(new TemplateDetailDto().setGroupId(templateGroupId));
//        //从模板中找是否存在service类型的生成
//        TemplateDetailDto service = getTemplate(templateDetailsList, GenConstants.GEN_TEMPLATE_SERVICE_TYPE);
//        TemplateDetailDto entity = getTemplate(templateDetailsList, GenConstants.GEN_TEMPLATE_ENTITY_TYPE);
//        TemplateDetailDto controller = getTemplate(templateDetailsList, GenConstants.GEN_TEMPLATE_CONTROLLER_TYPE);
//        TemplateDetailDto serviceImpl = getTemplate(templateDetailsList, GenConstants.GEN_TEMPLATE_SERVICE_IMPL_TYPE);
//        TemplateDetailDto mapper = getTemplate(templateDetailsList, GenConstants.GEN_TEMPLATE_MAPPER_TYPE);
//        TemplateDetailDto dao = getTemplate(templateDetailsList, GenConstants.GEN_TEMPLATE_DAO_TYPE);
//
//        //初始化包配置
//        initPackageConfig(genBaseConfigEntity, autoGenerator, service, entity, controller, serviceImpl, mapper,dao);
//        //初始化模板配置
//        initTemplateConfig(autoGenerator, service, entity, controller,mapper,serviceImpl,dao);
//        //批量生成，这里的集合个数相当于表个数，遍历生成
//        genTableConfigs.forEach(genTableConfigEntity -> {
//
//            //key模板类型 value具体的模板
//            Map<String, List<TemplateDetailDto>> tplMap = getTplMap(templateDetailsList);
//            //生成不同模板的
//            tplMap.forEach((key,tpl) -> {
//                //模板引擎配置
//                CustomAbstractTemplateEngine templateEngine = null;
//                switch (key){
//                    case GenConstants.TEMPLATE_ENGINE_FREEMARKER:
//                        templateEngine = new CustomFreemarkerTemplateEngine();
//                        break;
//                    case GenConstants.TEMPLATE_ENGINE_VELOCITY:
//                        templateEngine = new CustomVelocityTemplateEngine();
//                        break;
//                    case  GenConstants.TEMPLATE_ENGINE_BEETL:
//                        templateEngine = new CustomBeetlTemplateEngine();
//                        break;
//                    default:
//                        throw new RRException(String.format("不支持当前引擎 %s",key));
//                }
//                if (!ObjectUtils.isEmpty(templateEngine)){
//                    //初始化自定义配置
//                    initCustomConfig(genBaseConfigEntity, autoGenerator, genTableConfigEntity, tpl,customOutputTemplateResultConfig);
//                    //初始化策略配置
//                    initStrategyConfig(genBaseConfigEntity, genDataSourceEntity, autoGenerator, service, entity, controller, serviceImpl, mapper, dao, genTableConfigEntity);
//                    autoGenerator.execute(templateEngine);
//                }
//            });
//
//        });
//        return R2.ok(customOutputTemplateResultConfig);
//    }
//
//    /**
//     * <p>
//     * 获取模板
//     * </p>
//     * @version 1.0.0 <br>
//     * @date 2022/12/31 14:03 <br>
//     * @author yaolonga <br>
//     * @param templateDetailsList
//     * @return java.util.Map<java.lang.String,java.util.List<com.yaolong.generator.model.dto.TemplateDetailDto>>
//     */
//    private Map<String, List<TemplateDetailDto>> getTplMap(List<TemplateDetailDto> templateDetailsList) {
//        //目前只支持这三中模板引擎
//        List<TemplateDetailDto> ftls = templateDetailsList.stream().filter(td -> td.getTemplateType().equals(GenConstants.TEMPLATE_ENGINE_FREEMARKER)).collect(Collectors.toList());
//        List<TemplateDetailDto> beetls = templateDetailsList.stream().filter(td -> td.getTemplateType().equals(GenConstants.TEMPLATE_ENGINE_BEETL)).collect(Collectors.toList());
//        List<TemplateDetailDto> vtls = templateDetailsList.stream().filter(td -> td.getTemplateType().equals(GenConstants.TEMPLATE_ENGINE_VELOCITY)).collect(Collectors.toList());
//
//        Map<String, List<TemplateDetailDto>> templateFile = new HashMap<>();
//        templateFile.put(GenConstants.TEMPLATE_ENGINE_FREEMARKER,ftls);
//        templateFile.put(GenConstants.TEMPLATE_ENGINE_BEETL,beetls);
//        templateFile.put(GenConstants.TEMPLATE_ENGINE_VELOCITY,vtls);
//        return templateFile;
//    }
//
//    private void initCustomConfig(GenBaseConfigEntity genBaseConfigEntity, AutoGenerator autoGenerator, GenTableConfigEntity genTableConfigEntity, List<TemplateDetailDto> ftls,CustomOutputTemplateResultConfig templateResultConfig) {
//        //自定义配置
//        CustomConfigs customConfigs = new CustomConfigs();
//
//
//        //注入自定义配置
//        //自定义全局配置
//        CustomGlobalConfig customGlobalConfig = new CustomGlobalConfig();
//        customGlobalConfig.setOutputType(genBaseConfigEntity.getOutputType());
//        customGlobalConfig.setGenMode(genBaseConfigEntity.getGenMode());
//        customConfigs.setCustomGlobalConfig(customGlobalConfig);
//
//
//        //自定义模板配置
//        //TODO 考虑直接继承Config而不是单独定义注入配置
//        CustomTemplateConfig customTemplateConfig = new CustomTemplateConfig();
//        customTemplateConfig.setEnableDbTemplate(true);
//        //自定义controller策略配置
//        CustomControllerStrategyConfig customControllerStrategyConfig = new CustomControllerStrategyConfig();
//        customControllerStrategyConfig.setApiPrefix(genBaseConfigEntity.getApiPrefix());
//        customConfigs.setCustomControllerStrategyConfig(customControllerStrategyConfig);
//
//
//        Map<String,String> customFile = new HashMap<>();
//        Map<String,String> stringTemplates = new HashMap<>();
//        ftls.forEach(templateDetailDto -> {
//            //设置自定义文件
//            customFile.put(
//                    templateDetailDto.getFileName(),
//                    GenConstants.TEMPLATE_DB_TYPE +
//                    GenConstants.TEMPLATE_TYPE_SEPARATOR +
//                    templateDetailDto.getTemplateName() +
//                    GenConstants.TEMPLATE_TYPE_SEPARATOR +
//                    templateDetailDto.getTemplatePath() +
//                    GenConstants.TEMPLATE_TYPE_SEPARATOR +
//                    templateDetailDto.getTemplateFileType()
//                    );
//            //设置字符串模板
//            stringTemplates.put(templateDetailDto.getTemplateName(),templateDetailDto.getTemplateFile());
//        });
//
//        customTemplateConfig.setStringTemplates(stringTemplates);
//        customConfigs.setCustomTemplateConfig(customTemplateConfig);
//
//
//        //设置CustomFileConfig
//        CustomFileConfig customFileConfig = new CustomFileConfig();
//        customFileConfig.setVueParentPath(getOutputDir(genBaseConfigEntity.getFrontEndParentPath(),""));
//        //把当前表的配置全部注入
//        customFileConfig.setGenTableConfigEntity(genTableConfigEntity);
//        customConfigs.setCustomFileConfig(customFileConfig);
//        customConfigs.setCustomOutputTemplateResultConfig(templateResultConfig);
//
//
//        //注入配置
//        InjectionConfig injectionConfig = new InjectionConfig.Builder()
//                .customMap(Collections.singletonMap(GenConstants.CUSTOM_CONFIG_FIELD, customConfigs))
//                .customFile(customFile)
//                .fileOverride()
//                .build();
//        autoGenerator.injection(injectionConfig);
//    }
//
//    /**
//     * 策略配置初始化
//     */
//    private void initStrategyConfig(GenBaseConfigEntity genBaseConfigEntity, GenDataSourceConfigEntity genDataSourceEntity, AutoGenerator autoGenerator, TemplateDetailDto service, TemplateDetailDto entity, TemplateDetailDto controller, TemplateDetailDto serviceImpl, TemplateDetailDto mapper, TemplateDetailDto dao, GenTableConfigEntity genTableConfigEntity) {
//        StrategyConfig strategyConfig = new StrategyConfig.Builder()
//                .enableSchema()
//                .addInclude(genTableConfigEntity.getTableName())
//                .addTablePrefix(genBaseConfigEntity.getModuleName() + "_")
//                //实体策略
//                .entityBuilder()
//                .fileOverride()
//                .superClass(BaseEntity.class)
////                .disableSerialVersionUID()
//                .enableChainModel()
//                .enableLombok()
////                .enableRemoveIsPrefix()
//                .enableTableFieldAnnotation()
////                .enableActiveRecord()
////                .versionColumnName("version")
////                .versionPropertyName("version")
////                .logicDeleteColumnName("deleted")
////                .logicDeletePropertyName("deleteFlag")
//                .naming(NamingStrategy.underline_to_camel)
//                .columnNaming(NamingStrategy.underline_to_camel)
//                .addSuperEntityColumns("Date_Modified", "Modified_By_Name", "Modified_By", "Date_Created", "Created_By_Name")
//                .addTableFills(new Column("Date_Created", FieldFill.INSERT))
//                .addTableFills(new Property("Date_Modified", FieldFill.INSERT_UPDATE))
//                .idType(ObjectUtils.isEmpty(genDataSourceEntity.getIdType())? genDataSourceEntity.getIdType(): IdType.AUTO)
//                .formatFileName(getFormat(entity))
//
//                //controller策略
//                .controllerBuilder()
//                .fileOverride()
//                .superClass(BaseController.class)
//                .enableHyphenStyle()
//                .enableRestStyle()
//                .formatFileName(getFormat(controller))
//
//                //Service策略
//                .serviceBuilder()
//                .fileOverride()
//                .superServiceClass(IBaseService.class)
//                .superServiceImplClass(BaseServiceImpl.class)
//                .formatServiceFileName(getFormat(service))
//                .formatServiceImplFileName(getFormat(serviceImpl))
//
//                //mapper策略
//                .mapperBuilder()
//                .fileOverride()
//                .superClass(BaseMapper.class)
//                .enableMapperAnnotation()
//                .enableBaseResultMap()
//                .enableBaseColumnList()
//                .formatMapperFileName(getFormat(dao))
//                .formatXmlFileName(getFormat(mapper))
//                .build();
//        autoGenerator.strategy(strategyConfig);
//    }
//
//    /**
//     * 格式化文件名
//     */
//    private String getFormat(TemplateDetailDto serviceImpl) {
//        return serviceImpl.getFileName().split("\\.")[0];
//    }
//
//    private void initTemplateConfig(AutoGenerator autoGenerator, TemplateDetailDto service, TemplateDetailDto entity, TemplateDetailDto controller,TemplateDetailDto mapper,TemplateDetailDto serviceImpl,TemplateDetailDto dao) {
//        //模板配置
//        TemplateConfig.Builder templateConfigBuilder = new TemplateConfig.Builder();
//        //禁用自带的模板
//        templateConfigBuilder
//                .disable(TemplateType.ENTITY)
//                .disable(TemplateType.CONTROLLER)
//                .disable(TemplateType.SERVICE)
//                .disable(TemplateType.SERVICEIMPL)
//                .disable(TemplateType.MAPPER)
//                .disable(TemplateType.XML);
//
//        //设置service、dao、controller、serviceImpl、mapper模板配置
//        if (!ObjectUtils.isEmpty(entity) && !ObjectUtils.isEmpty(entity.getTemplateFilePath())){
//            templateConfigBuilder.entity(entity.getTemplateFilePath());
//        }
//        if (!ObjectUtils.isEmpty(controller) && !ObjectUtils.isEmpty(controller.getTemplateFilePath())){
//            templateConfigBuilder.controller(controller.getTemplateFilePath());
//        }
//        if (!ObjectUtils.isEmpty(service) && !ObjectUtils.isEmpty(service.getTemplateFilePath())){
//            templateConfigBuilder.service(service.getTemplateFilePath());
//        }
//        if (!ObjectUtils.isEmpty(mapper) && !ObjectUtils.isEmpty(mapper.getTemplateFilePath())){
//            templateConfigBuilder.xml(mapper.getTemplateFilePath());
//        }
//        if (!ObjectUtils.isEmpty(dao) && !ObjectUtils.isEmpty(dao.getTemplateFilePath())){
//            templateConfigBuilder.mapper(dao.getTemplateFilePath());
//        }
//        if (!ObjectUtils.isEmpty(serviceImpl) && !ObjectUtils.isEmpty(serviceImpl.getTemplateFilePath())){
//            templateConfigBuilder.serviceImpl(serviceImpl.getTemplateFilePath());
//        }
//        autoGenerator.template(templateConfigBuilder.build());
//    }
//
//    /**
//     * 获取模板-取模板列表的最后一个
//     */
//    private TemplateDetailDto getTemplate(List<TemplateDetailDto> templateDetailsList,String templateGentype) {
//        List<TemplateDetailDto> services = templateDetailsList.stream().filter(td -> td.getTemplateGenType().equals(templateGentype)).collect(Collectors.toList());
//        return services.get(services.size()-1);
//    }
//
//    private void initPackageConfig(GenBaseConfigEntity genBaseConfigEntity, AutoGenerator autoGenerator, TemplateDetailDto service, TemplateDetailDto entity, TemplateDetailDto controller, TemplateDetailDto serviceImpl, TemplateDetailDto mapper,TemplateDetailDto dao) {
//        //包配置
//        PackageConfig.Builder packageConfigBuilder = new PackageConfig.Builder();
//        packageConfigBuilder
//                .parent(genBaseConfigEntity.getPackageName())
//                .moduleName(genBaseConfigEntity.getModuleName());
//        //默认生成配置
//        packageConfigBuilder
//                .entity("model.entity")
//                .service("service")
//                .serviceImpl("service.impl")
//                .mapper("dao")
//                .xml("mapper.xml")
//                .controller("controller")
//                .pathInfo(Collections.singletonMap(OutputFile.xml,getOutputDir(genBaseConfigEntity.getAfterEndParentPath(), "/resources/mapper/"+ genBaseConfigEntity.getModuleName())));
//
//
//        if (!ObjectUtils.isEmpty(service)){
//            packageConfigBuilder.service(service.getTemplateFilePath().replace("\\","."));
//        }
//        if (!ObjectUtils.isEmpty(entity)){
//            packageConfigBuilder.entity(entity.getTemplateFilePath().replace("\\","."));
//        }
//        if (!ObjectUtils.isEmpty(serviceImpl)){
//            packageConfigBuilder.serviceImpl(serviceImpl.getTemplateFilePath().replace("\\","."));
//        }
//        if (!ObjectUtils.isEmpty(controller)){
//            packageConfigBuilder.controller(controller.getTemplateFilePath().replace("\\","."));
//        }
//        if (!ObjectUtils.isEmpty(mapper)){
//            packageConfigBuilder.xml(mapper.getTemplateFilePath().replace("\\","."));
//        }
//        if (!ObjectUtils.isEmpty(dao)){
//            packageConfigBuilder.mapper(mapper.getTemplateFilePath().replace("\\","."));
//        }
//        autoGenerator.packageInfo(packageConfigBuilder.build());
//    }
//
//
//
//
//    /**
//     * <p>
//     * 初始化全局配置
//     * </p>
//     * @version 1.0.0 <br>
//     * @date 2022/12/31 0:04 <br>
//     * @author yaolonga <br>
//     * @param genBaseConfigEntity
// * @param autoGenerator
//     * @return void
//     */
//    private void initGlobalConfig(GenBaseConfigEntity genBaseConfigEntity, AutoGenerator autoGenerator) {
//        //全局配置
//        GlobalConfig.Builder globalConfigBuilder = new GlobalConfig.Builder();
//
//
//        String outputDir = getOutputDir(genBaseConfigEntity.getAfterEndParentPath(),"/api");
//
//        GlobalConfig globalConfig = globalConfigBuilder.outputDir(outputDir)
//                .author(genBaseConfigEntity.getAuthor())
//                .enableSwagger()
//                .disableOpenDir()
//                .dateType(DateType.TIME_PACK)
//                .commentDate("yyyy-MM-dd")
//                .build();
//        autoGenerator.global(globalConfig);
//    }
//
//    private String getOutputDir(String parentPath,String suffix) {
//        String outputDir = System.getProperty("user.dir") + "/" + parentPath + suffix ;
//        if (parentPath.startsWith("/") || parentPath.matches(GenConstants.DRIVE_REGEX)){
//            //linux路径根路径和windos绝对路径直接tihuan
//            outputDir = parentPath;
//        }
//        return outputDir;
//    }
//
//
//    private IDbQuery getDbQuery(String dbType){
//        IDbQuery query = null;
//
//        switch (dbType) {
//            case GenConstants.DB_TYPE_MYSQL:
//                query = new MySqlQuery();
//                break;
//            case GenConstants.DB_TYPE_ORACLE:
//                query = new OracleQuery();
//                break;
//            case GenConstants.DB_TYPE_BD2:
//                query = new DB2Query();
//                break;
//            case GenConstants.DB_TYPE_POSTGRESQL:
//                query = new PostgreSqlQuery();
//                break;
//            case GenConstants.DB_TYPE_SQLSERVER:
//                query = new SqlServerQuery();
//                break;
//            default:
//                query = new MySqlQuery();
//                break;
//        }
//        return query;
//    }
//
//    public static void main(String[] args) {
//        String url = "jdbc:mysql://localhost:3306/agilefastfk?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true";
//        String username = "root";
//        String password = "yin7372175240000";
//        //数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(url,username,password)
//                .dbQuery(new MySqlQuery())
//                .build();
//        StrategyConfig strategyConfig = new StrategyConfig.Builder().enableSchema().build();
//
//        ConfigBuilder configBuilder = new ConfigBuilder(new PackageConfig.Builder().build(),dataSourceConfig,strategyConfig,new TemplateConfig.Builder().build(),new GlobalConfig.Builder().build(),new InjectionConfig.Builder().build());
//        IDatabaseQuery.DefaultDatabaseQuery defaultDatabaseQuery = new IDatabaseQuery.DefaultDatabaseQuery(configBuilder);
//        List<TableInfo> tableInfos = defaultDatabaseQuery.queryTables();
//        tableInfos.forEach(tableInfo -> {
//            try {
//                System.out.println(MapperUtils.obj2json(tableInfo));
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        });
//    }
//
//}
